org.springframework.core.io.support

Class PathMatchingResourcePatternResolver

    • Field Detail

      • logger

        private static final Log logger
      • equinoxResolveMethod

        private static java.lang.reflect.Method equinoxResolveMethod
    • Constructor Detail

      • PathMatchingResourcePatternResolver

        public PathMatchingResourcePatternResolver()
        Create a new PathMatchingResourcePatternResolver with a DefaultResourceLoader.

        ClassLoader access will happen via the thread context class loader.

        See Also:
        DefaultResourceLoader
      • PathMatchingResourcePatternResolver

        public PathMatchingResourcePatternResolver(java.lang.ClassLoader classLoader)
        Create a new PathMatchingResourcePatternResolver with a DefaultResourceLoader.
        Parameters:
        classLoader - the ClassLoader to load classpath resources with, or null for using the thread context class loader at the time of actual resource access
        See Also:
        DefaultResourceLoader
      • PathMatchingResourcePatternResolver

        public PathMatchingResourcePatternResolver(ResourceLoader resourceLoader)
        Create a new PathMatchingResourcePatternResolver.

        ClassLoader access will happen via the thread context class loader.

        Parameters:
        resourceLoader - the ResourceLoader to load root directories and actual resources with
    • Method Detail

      • getResourceLoader

        public ResourceLoader getResourceLoader()
        Return the ResourceLoader that this pattern resolver works with.
      • getClassLoader

        public java.lang.ClassLoader getClassLoader()
        Return the ClassLoader that this pattern resolver works with (never null).
        Specified by:
        getClassLoader in interface ResourceLoader
        Returns:
        the ClassLoader (never null)
      • setPathMatcher

        public void setPathMatcher(PathMatcher pathMatcher)
        Set the PathMatcher implementation to use for this resource pattern resolver. Default is AntPathMatcher.
        See Also:
        AntPathMatcher
      • getPathMatcher

        public PathMatcher getPathMatcher()
        Return the PathMatcher that this resource pattern resolver uses.
      • getResource

        public Resource getResource(java.lang.String location)
        Description copied from interface: ResourceLoader
        Return a Resource handle for the specified resource. The handle should always be a reusable resource descriptor, allowing for multiple InputStreamSource.getInputStream() calls.

        • Must support fully qualified URLs, e.g. "file:C:/test.dat".
        • Must support classpath pseudo-URLs, e.g. "classpath:test.dat".
        • Should support relative file paths, e.g. "WEB-INF/test.dat". (This will be implementation-specific, typically provided by an ApplicationContext implementation.)

        Note that a Resource handle does not imply an existing resource; you need to invoke Resource.exists() to check for existence.

        Specified by:
        getResource in interface ResourceLoader
        Parameters:
        location - the resource location
        Returns:
        a corresponding Resource handle
        See Also:
        ResourceLoader.CLASSPATH_URL_PREFIX, Resource.exists(), InputStreamSource.getInputStream()
      • getResources

        public Resource[] getResources(java.lang.String locationPattern)
                                throws java.io.IOException
        Description copied from interface: ResourcePatternResolver
        Resolve the given location pattern into Resource objects.

        Overlapping resource entries that point to the same physical resource should be avoided, as far as possible. The result should have set semantics.

        Specified by:
        getResources in interface ResourcePatternResolver
        Parameters:
        locationPattern - the location pattern to resolve
        Returns:
        the corresponding Resource objects
        Throws:
        java.io.IOException - in case of I/O errors
      • findAllClassPathResources

        protected Resource[] findAllClassPathResources(java.lang.String location)
                                                throws java.io.IOException
        Find all class location resources with the given location via the ClassLoader.
        Parameters:
        location - the absolute path within the classpath
        Returns:
        the result as Resource array
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        ClassLoader.getResources(java.lang.String), convertClassLoaderURL(java.net.URL)
      • convertClassLoaderURL

        protected Resource convertClassLoaderURL(java.net.URL url)
        Convert the given URL as returned from the ClassLoader into a Resource object.

        The default implementation simply creates a UrlResource instance.

        Parameters:
        url - a URL as returned from the ClassLoader
        Returns:
        the corresponding Resource object
        See Also:
        ClassLoader.getResources(java.lang.String), Resource
      • determineRootDir

        protected java.lang.String determineRootDir(java.lang.String location)
        Determine the root directory for the given location.

        Used for determining the starting point for file matching, resolving the root directory location to a java.io.File and passing it into retrieveMatchingFiles, with the remainder of the location as pattern.

        Will return "/WEB-INF/" for the pattern "/WEB-INF/*.xml", for example.

        Parameters:
        location - the location to check
        Returns:
        the part of the location that denotes the root directory
        See Also:
        retrieveMatchingFiles(java.io.File, java.lang.String)
      • resolveRootDirResource

        protected Resource resolveRootDirResource(Resource original)
                                           throws java.io.IOException
        Resolve the specified resource for path matching.

        The default implementation detects an Equinox OSGi "bundleresource:" / "bundleentry:" URL and resolves it into a standard jar file URL that can be traversed using Spring's standard jar file traversal algorithm.

        Parameters:
        original - the resource to resolve
        Returns:
        the resolved resource (may be identical to the passed-in resource)
        Throws:
        java.io.IOException - in case of resolution failure
      • isJarResource

        protected boolean isJarResource(Resource resource)
                                 throws java.io.IOException
        Return whether the given resource handle indicates a jar resource that the doFindPathMatchingJarResources method can handle.

        The default implementation checks against the URL protocols "jar", "zip" and "wsjar" (the latter are used by BEA WebLogic Server and IBM WebSphere, respectively, but can be treated like jar files).

        Parameters:
        resource - the resource handle to check (usually the root directory to start path matching from)
        Throws:
        java.io.IOException
        See Also:
        doFindPathMatchingJarResources(org.springframework.core.io.Resource, java.lang.String), ResourceUtils.isJarURL(java.net.URL)
      • doFindPathMatchingJarResources

        protected java.util.Set<Resource> doFindPathMatchingJarResources(Resource rootDirResource,
                                                             java.lang.String subPattern)
                                                                  throws java.io.IOException
        Find all resources in jar files that match the given location pattern via the Ant-style PathMatcher.
        Parameters:
        rootDirResource - the root directory as Resource
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        JarURLConnection, PathMatcher
      • getJarFile

        protected java.util.jar.JarFile getJarFile(java.lang.String jarFileUrl)
                                            throws java.io.IOException
        Resolve the given jar file URL into a JarFile object.
        Throws:
        java.io.IOException
      • doFindPathMatchingFileResources

        protected java.util.Set<Resource> doFindPathMatchingFileResources(Resource rootDirResource,
                                                              java.lang.String subPattern)
                                                                   throws java.io.IOException
        Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.
        Parameters:
        rootDirResource - the root directory as Resource
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        retrieveMatchingFiles(java.io.File, java.lang.String), PathMatcher
      • doFindMatchingFileSystemResources

        protected java.util.Set<Resource> doFindMatchingFileSystemResources(java.io.File rootDir,
                                                                java.lang.String subPattern)
                                                                     throws java.io.IOException
        Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.
        Parameters:
        rootDir - the root directory in the file system
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        retrieveMatchingFiles(java.io.File, java.lang.String), PathMatcher
      • retrieveMatchingFiles

        protected java.util.Set<java.io.File> retrieveMatchingFiles(java.io.File rootDir,
                                                        java.lang.String pattern)
                                                             throws java.io.IOException
        Retrieve files that match the given path pattern, checking the given directory and its subdirectories.
        Parameters:
        rootDir - the directory to start from
        pattern - the pattern to match against, relative to the root directory
        Returns:
        the Set of matching File instances
        Throws:
        java.io.IOException - if directory contents could not be retrieved
      • doRetrieveMatchingFiles

        protected void doRetrieveMatchingFiles(java.lang.String fullPattern,
                                   java.io.File dir,
                                   java.util.Set<java.io.File> result)
                                        throws java.io.IOException
        Recursively retrieve files that match the given pattern, adding them to the given result list.
        Parameters:
        fullPattern - the pattern to match against, with prepended root directory path
        dir - the current directory
        result - the Set of matching File instances to add to
        Throws:
        java.io.IOException - if directory contents could not be retrieved